package com.mkait.thief.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.math.BigDecimal;
import lombok.Data;

/**
 * 
 * @TableName goods
 */
@TableName(value ="goods")
@Data
public class Goods implements Serializable {
    /**
     * 
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 
     */
    @TableField(value = "user_id")
    private Integer userId;

    /**
     * 
     */
    @TableField(value = "cate_id")
    private Integer cateId;

    /**
     * 主题
     */
    @TableField(value = "theme")
    private String theme;

    /**
     * 排序
     */
    @TableField(value = "sort")
    private Integer sort;

    /**
     * 
     */
    @TableField(value = "name")
    private String name;

    /**
     * 
     */
    @TableField(value = "price")
    private BigDecimal price;

    /**
     * 成本价
     */
    @TableField(value = "cost_price")
    private BigDecimal costPrice;

    /**
     * 批发优惠
     */
    @TableField(value = "wholesale_discount")
    private Integer wholesaleDiscount;

    /**
     * 批发价
     */
    @TableField(value = "wholesale_discount_list")
    private String wholesaleDiscountList;

    /**
     * 起购数量
     */
    @TableField(value = "limit_quantity")
    private Integer limitQuantity;

    /**
     * 库存预警 0表示不报警
     */
    @TableField(value = "inventory_notify")
    private Integer inventoryNotify;

    /**
     * 库存预警通知方式 1站内信 2邮件
     */
    @TableField(value = "inventory_notify_type")
    private Integer inventoryNotifyType;

    /**
     * 优惠券 0不支持 1支持
     */
    @TableField(value = "coupon_type")
    private Integer couponType;

    /**
     * 售出通知
     */
    @TableField(value = "sold_notify")
    private Integer soldNotify;

    /**
     * 取卡密码 0关闭 1必填 2选填
     */
    @TableField(value = "take_card_type")
    private Integer takeCardType;

    /**
     * 访问密码
     */
    @TableField(value = "visit_type")
    private Integer visitType;

    /**
     * 访问密码
     */
    @TableField(value = "visit_password")
    private String visitPassword;

    /**
     * 客户信息
     */
    @TableField(value = "contact_limit")
    private Object contactLimit;

    /**
     * 商品说明
     */
    @TableField(value = "content")
    private String content;

    /**
     * 使用说明
     */
    @TableField(value = "remark")
    private String remark;

    /**
     * 0下架 1上架
     */
    @TableField(value = "status")
    private Integer status;

    /**
     * 
     */
    @TableField(value = "create_at")
    private Integer createAt;

    /**
     * 
     */
    @TableField(value = "is_freeze")
    private Integer isFreeze;

    /**
     * 短信付费方：0买家 1商户
     */
    @TableField(value = "sms_payer")
    private Integer smsPayer;

    /**
     * 删除标记
     */
    @TableField(value = "delete_at")
    private Integer deleteAt;

    /**
     * 
     */
    @TableField(value = "can_proxy")
    private Integer canProxy;

    /**
     * 
     */
    @TableField(value = "is_proxy")
    private Integer isProxy;

    /**
     * 
     */
    @TableField(value = "proxy_id")
    private Integer proxyId;

    /**
     * 发卡顺序 0现卖老卡 1先卖新卡
     */
    @TableField(value = "card_order")
    private Integer cardOrder;

    /**
     * 商品对接码
     */
    @TableField(value = "proxy_code")
    private String proxyCode;

    /**
     * 代理成本价格
     */
    @TableField(value = "proxy_price")
    private BigDecimal proxyPrice;

    /**
     * 代理加价
     */
    @TableField(value = "proxy_price_add")
    private Integer proxyPriceAdd;

    /**
     * 
     */
    @TableField(value = "proxy_sync_content")
    private Integer proxySyncContent;

    /**
     * 
     */
    @TableField(value = "proxy_price_diy")
    private Integer proxyPriceDiy;

    /**
     * 
     */
    @TableField(value = "is_cross")
    private Integer isCross;

    /**
     * 
     */
    @TableField(value = "cross_id")
    private Integer crossId;

    /**
     * 
     */
    @TableField(value = "cross_params")
    private String crossParams;

    /**
     * 
     */
    @TableField(value = "selectcard_fee")
    private BigDecimal selectcardFee;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;

    @Override
    public boolean equals(Object that) {
        if (this == that) {
            return true;
        }
        if (that == null) {
            return false;
        }
        if (getClass() != that.getClass()) {
            return false;
        }
        Goods other = (Goods) that;
        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
            && (this.getUserId() == null ? other.getUserId() == null : this.getUserId().equals(other.getUserId()))
            && (this.getCateId() == null ? other.getCateId() == null : this.getCateId().equals(other.getCateId()))
            && (this.getTheme() == null ? other.getTheme() == null : this.getTheme().equals(other.getTheme()))
            && (this.getSort() == null ? other.getSort() == null : this.getSort().equals(other.getSort()))
            && (this.getName() == null ? other.getName() == null : this.getName().equals(other.getName()))
            && (this.getPrice() == null ? other.getPrice() == null : this.getPrice().equals(other.getPrice()))
            && (this.getCostPrice() == null ? other.getCostPrice() == null : this.getCostPrice().equals(other.getCostPrice()))
            && (this.getWholesaleDiscount() == null ? other.getWholesaleDiscount() == null : this.getWholesaleDiscount().equals(other.getWholesaleDiscount()))
            && (this.getWholesaleDiscountList() == null ? other.getWholesaleDiscountList() == null : this.getWholesaleDiscountList().equals(other.getWholesaleDiscountList()))
            && (this.getLimitQuantity() == null ? other.getLimitQuantity() == null : this.getLimitQuantity().equals(other.getLimitQuantity()))
            && (this.getInventoryNotify() == null ? other.getInventoryNotify() == null : this.getInventoryNotify().equals(other.getInventoryNotify()))
            && (this.getInventoryNotifyType() == null ? other.getInventoryNotifyType() == null : this.getInventoryNotifyType().equals(other.getInventoryNotifyType()))
            && (this.getCouponType() == null ? other.getCouponType() == null : this.getCouponType().equals(other.getCouponType()))
            && (this.getSoldNotify() == null ? other.getSoldNotify() == null : this.getSoldNotify().equals(other.getSoldNotify()))
            && (this.getTakeCardType() == null ? other.getTakeCardType() == null : this.getTakeCardType().equals(other.getTakeCardType()))
            && (this.getVisitType() == null ? other.getVisitType() == null : this.getVisitType().equals(other.getVisitType()))
            && (this.getVisitPassword() == null ? other.getVisitPassword() == null : this.getVisitPassword().equals(other.getVisitPassword()))
            && (this.getContactLimit() == null ? other.getContactLimit() == null : this.getContactLimit().equals(other.getContactLimit()))
            && (this.getContent() == null ? other.getContent() == null : this.getContent().equals(other.getContent()))
            && (this.getRemark() == null ? other.getRemark() == null : this.getRemark().equals(other.getRemark()))
            && (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus()))
            && (this.getCreateAt() == null ? other.getCreateAt() == null : this.getCreateAt().equals(other.getCreateAt()))
            && (this.getIsFreeze() == null ? other.getIsFreeze() == null : this.getIsFreeze().equals(other.getIsFreeze()))
            && (this.getSmsPayer() == null ? other.getSmsPayer() == null : this.getSmsPayer().equals(other.getSmsPayer()))
            && (this.getDeleteAt() == null ? other.getDeleteAt() == null : this.getDeleteAt().equals(other.getDeleteAt()))
            && (this.getCanProxy() == null ? other.getCanProxy() == null : this.getCanProxy().equals(other.getCanProxy()))
            && (this.getIsProxy() == null ? other.getIsProxy() == null : this.getIsProxy().equals(other.getIsProxy()))
            && (this.getProxyId() == null ? other.getProxyId() == null : this.getProxyId().equals(other.getProxyId()))
            && (this.getCardOrder() == null ? other.getCardOrder() == null : this.getCardOrder().equals(other.getCardOrder()))
            && (this.getProxyCode() == null ? other.getProxyCode() == null : this.getProxyCode().equals(other.getProxyCode()))
            && (this.getProxyPrice() == null ? other.getProxyPrice() == null : this.getProxyPrice().equals(other.getProxyPrice()))
            && (this.getProxyPriceAdd() == null ? other.getProxyPriceAdd() == null : this.getProxyPriceAdd().equals(other.getProxyPriceAdd()))
            && (this.getProxySyncContent() == null ? other.getProxySyncContent() == null : this.getProxySyncContent().equals(other.getProxySyncContent()))
            && (this.getProxyPriceDiy() == null ? other.getProxyPriceDiy() == null : this.getProxyPriceDiy().equals(other.getProxyPriceDiy()))
            && (this.getIsCross() == null ? other.getIsCross() == null : this.getIsCross().equals(other.getIsCross()))
            && (this.getCrossId() == null ? other.getCrossId() == null : this.getCrossId().equals(other.getCrossId()))
            && (this.getCrossParams() == null ? other.getCrossParams() == null : this.getCrossParams().equals(other.getCrossParams()))
            && (this.getSelectcardFee() == null ? other.getSelectcardFee() == null : this.getSelectcardFee().equals(other.getSelectcardFee()));
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
        result = prime * result + ((getUserId() == null) ? 0 : getUserId().hashCode());
        result = prime * result + ((getCateId() == null) ? 0 : getCateId().hashCode());
        result = prime * result + ((getTheme() == null) ? 0 : getTheme().hashCode());
        result = prime * result + ((getSort() == null) ? 0 : getSort().hashCode());
        result = prime * result + ((getName() == null) ? 0 : getName().hashCode());
        result = prime * result + ((getPrice() == null) ? 0 : getPrice().hashCode());
        result = prime * result + ((getCostPrice() == null) ? 0 : getCostPrice().hashCode());
        result = prime * result + ((getWholesaleDiscount() == null) ? 0 : getWholesaleDiscount().hashCode());
        result = prime * result + ((getWholesaleDiscountList() == null) ? 0 : getWholesaleDiscountList().hashCode());
        result = prime * result + ((getLimitQuantity() == null) ? 0 : getLimitQuantity().hashCode());
        result = prime * result + ((getInventoryNotify() == null) ? 0 : getInventoryNotify().hashCode());
        result = prime * result + ((getInventoryNotifyType() == null) ? 0 : getInventoryNotifyType().hashCode());
        result = prime * result + ((getCouponType() == null) ? 0 : getCouponType().hashCode());
        result = prime * result + ((getSoldNotify() == null) ? 0 : getSoldNotify().hashCode());
        result = prime * result + ((getTakeCardType() == null) ? 0 : getTakeCardType().hashCode());
        result = prime * result + ((getVisitType() == null) ? 0 : getVisitType().hashCode());
        result = prime * result + ((getVisitPassword() == null) ? 0 : getVisitPassword().hashCode());
        result = prime * result + ((getContactLimit() == null) ? 0 : getContactLimit().hashCode());
        result = prime * result + ((getContent() == null) ? 0 : getContent().hashCode());
        result = prime * result + ((getRemark() == null) ? 0 : getRemark().hashCode());
        result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode());
        result = prime * result + ((getCreateAt() == null) ? 0 : getCreateAt().hashCode());
        result = prime * result + ((getIsFreeze() == null) ? 0 : getIsFreeze().hashCode());
        result = prime * result + ((getSmsPayer() == null) ? 0 : getSmsPayer().hashCode());
        result = prime * result + ((getDeleteAt() == null) ? 0 : getDeleteAt().hashCode());
        result = prime * result + ((getCanProxy() == null) ? 0 : getCanProxy().hashCode());
        result = prime * result + ((getIsProxy() == null) ? 0 : getIsProxy().hashCode());
        result = prime * result + ((getProxyId() == null) ? 0 : getProxyId().hashCode());
        result = prime * result + ((getCardOrder() == null) ? 0 : getCardOrder().hashCode());
        result = prime * result + ((getProxyCode() == null) ? 0 : getProxyCode().hashCode());
        result = prime * result + ((getProxyPrice() == null) ? 0 : getProxyPrice().hashCode());
        result = prime * result + ((getProxyPriceAdd() == null) ? 0 : getProxyPriceAdd().hashCode());
        result = prime * result + ((getProxySyncContent() == null) ? 0 : getProxySyncContent().hashCode());
        result = prime * result + ((getProxyPriceDiy() == null) ? 0 : getProxyPriceDiy().hashCode());
        result = prime * result + ((getIsCross() == null) ? 0 : getIsCross().hashCode());
        result = prime * result + ((getCrossId() == null) ? 0 : getCrossId().hashCode());
        result = prime * result + ((getCrossParams() == null) ? 0 : getCrossParams().hashCode());
        result = prime * result + ((getSelectcardFee() == null) ? 0 : getSelectcardFee().hashCode());
        return result;
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append(getClass().getSimpleName());
        sb.append(" [");
        sb.append("Hash = ").append(hashCode());
        sb.append(", id=").append(id);
        sb.append(", userId=").append(userId);
        sb.append(", cateId=").append(cateId);
        sb.append(", theme=").append(theme);
        sb.append(", sort=").append(sort);
        sb.append(", name=").append(name);
        sb.append(", price=").append(price);
        sb.append(", costPrice=").append(costPrice);
        sb.append(", wholesaleDiscount=").append(wholesaleDiscount);
        sb.append(", wholesaleDiscountList=").append(wholesaleDiscountList);
        sb.append(", limitQuantity=").append(limitQuantity);
        sb.append(", inventoryNotify=").append(inventoryNotify);
        sb.append(", inventoryNotifyType=").append(inventoryNotifyType);
        sb.append(", couponType=").append(couponType);
        sb.append(", soldNotify=").append(soldNotify);
        sb.append(", takeCardType=").append(takeCardType);
        sb.append(", visitType=").append(visitType);
        sb.append(", visitPassword=").append(visitPassword);
        sb.append(", contactLimit=").append(contactLimit);
        sb.append(", content=").append(content);
        sb.append(", remark=").append(remark);
        sb.append(", status=").append(status);
        sb.append(", createAt=").append(createAt);
        sb.append(", isFreeze=").append(isFreeze);
        sb.append(", smsPayer=").append(smsPayer);
        sb.append(", deleteAt=").append(deleteAt);
        sb.append(", canProxy=").append(canProxy);
        sb.append(", isProxy=").append(isProxy);
        sb.append(", proxyId=").append(proxyId);
        sb.append(", cardOrder=").append(cardOrder);
        sb.append(", proxyCode=").append(proxyCode);
        sb.append(", proxyPrice=").append(proxyPrice);
        sb.append(", proxyPriceAdd=").append(proxyPriceAdd);
        sb.append(", proxySyncContent=").append(proxySyncContent);
        sb.append(", proxyPriceDiy=").append(proxyPriceDiy);
        sb.append(", isCross=").append(isCross);
        sb.append(", crossId=").append(crossId);
        sb.append(", crossParams=").append(crossParams);
        sb.append(", selectcardFee=").append(selectcardFee);
        sb.append(", serialVersionUID=").append(serialVersionUID);
        sb.append("]");
        return sb.toString();
    }
}